package main

import (
	"fmt"
	"github.com/imroc/biu"
)

func main() {
	var b byte
	b = 1
	fmt.Println("常规展示：", b)                         // 原始数据: 1
	fmt.Println("二进制位：", biu.ByteToBinaryString(b)) //二进制方式：00000001

	//向左移动一位
	b = b << 1
	fmt.Println("左边移动一位：", b) // 原始数据: 2
	fmt.Println("二进制位：", biu.ByteToBinaryString(b)) //二进制方式：00000010

	var b1 byte = 3

	fmt.Println("b1=：", b1) // 原始数据: 3
	fmt.Println("二进制位：", biu.ByteToBinaryString(b1)) //二进制方式：00000011


	// 或（|） 运算: 二进制位中对应位置有1则为1，否则为0。
	// 2 的二进制为：  10  ， 3 的二进制为： 11
	// 那么 2|3 = 11


	fmt.Println("（2|3）二进制位：", biu.ByteToBinaryString(2|3)) //二进制方式：00000011


	// 与（&） 运算: 二进制位中对应位置都为1则为1，否则为0。
	// 2 的二进制为：  10  ， 3 的二进制为： 11
	// 那么 2&3 = 10


	fmt.Println("（2&3）二进制位：", biu.ByteToBinaryString(2&3)) //二进制方式：00000010


	//异或（^）运算： 二进制中对应位置不同的为1，否则为0.
	// 2 的二进制为：  10  ， 3 的二进制为： 11
	// 那么 2^3 = 01
	fmt.Println("（2^3）二进制位：", biu.ByteToBinaryString(2^3)) //二进制方式：00000001


	var c = byte(2)
	//取反（^）:二进制中的所有位置 0 为1,1为 0.
	fmt.Println("（^2）常规输出：", ^c) //二进制方式：253
	fmt.Println("（^2）二进制位：", biu.ByteToBinaryString(^c)) //二进制方式：11111101

}
